
package com.jc.platform.lixinping.vo;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;


import com.jc.platform.common.supers.AbstractVO;
import com.alibaba.fastjson.annotation.JSONField;
import com.jc.platform.lixinping.vo.SalesContractStageVO;
import com.alibaba.excel.annotation.ExcelIgnore;
import org.springframework.format.annotation.DateTimeFormat;

import com.jc.platform.lixinping.group.Update;
import com.jc.platform.lixinping.group.Insert;
import javax.validation.constraints.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.math.*;
import javax.validation.Valid;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jc.platform.common.utils.DateUtil;
import com.jc.platform.lixinping.config.LocalDateTimeConverter;


/**
 * ClassName SalesContractVO.java
 * Description 销售合同
 *
 * @author 集团管理员
 * @date 
 */
@ApiModel(value = "SalesContractVO", description = "销售合同")
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@EqualsAndHashCode(of = { "id" }, callSuper = false)
public class SalesContractVO extends AbstractVO implements Serializable
{
    private static final long serialVersionUID = 1L;

    /**
     * 实体编码
     */
    public static final String IS_ENTITY_CODE = "f0b7f7cbe13c4599817aa635cc795516";

    /**
     * 穿梭
     */
    @NotNull(message = "穿梭不可以为空")
    @NotEmpty(message = "穿梭不可以为空字符串")
    @Size(max=500,message = "穿梭字段长度不可以超过500个字符")
    @ApiModelProperty(value = "穿梭")
    private String chuansuo;
    /**
     * 级联
     */
    @NotNull(message = "级联不可以为空")
    @NotEmpty(message = "级联不可以为空字符串")
    @Size(max=500,message = "级联字段长度不可以超过500个字符")
    @ApiModelProperty(value = "级联")
    private String jilian;
    /**
     * 创建人【最大长度20】
     */
    @Size(max=20,message = "创建人【最大长度20】字段长度不可以超过20个字符")
    @ApiModelProperty(value = "创建人【最大长度20】")
    private String createName;
    /**
     * 创建时间【yyyy-MM-ddHH:mm:ss】
     */
    @ApiModelProperty(value = "创建时间【yyyy-MM-ddHH:mm:ss】")
    private LocalDateTime createTime;
    /**
     * 修改人id
     */
    @ApiModelProperty(value = "修改人id")
    private Long modifyId;
    /**
     * 修改人【最大长度20】
     */
    @Size(max=20,message = "修改人【最大长度20】字段长度不可以超过20个字符")
    @ApiModelProperty(value = "修改人【最大长度20】")
    private String modifyName;
    /**
     * 修改时间【yyyy-MM-ddHH:mm:ss】
     */
    @ApiModelProperty(value = "修改时间【yyyy-MM-ddHH:mm:ss】")
    private LocalDateTime modifyTime;
    /**
     * 扩展字段
     */
    @Size(max=20,message = "扩展字段字段长度不可以超过20个字符")
    @ApiModelProperty(value = "扩展字段")
    private String extension;
    /**
     * 租户ID
     */
    @ApiModelProperty(value = "租户ID")
    private Long tenantId;
    /**
     * 集团ID
     */
    @ApiModelProperty(value = "集团ID")
    private Long groupId;
    /**
     * 机构ID
     */
    @ApiModelProperty(value = "机构ID")
    private Long orgId;
    /**
     * 部门ID
     */
    @ApiModelProperty(value = "部门ID")
    private Long deptId;
    /**
     * 主键ID
     */
    @NotNull(groups = Update.class, message = "主键ID不能为Null")
    @ApiModelProperty(value = "主键ID")
    private Long id;
    /**
     * 名称
     */
    @NotNull(message = "名称不可以为空")
    @NotEmpty(message = "名称不可以为空字符串")
    @Size(max=50,message = "名称字段长度不可以超过50个字符")
    @ApiModelProperty(value = "名称")
    private String name;
    /**
     * 编码
     */
    @Size(max=100,message = "编码字段长度不可以超过100个字符")
    @ApiModelProperty(value = "编码")
    private String code;
    /**
     * 地区ID
     */
    @ApiModelProperty(value = "地区ID")
    private Long areaId;
    /**
     * 签订日期
     */
    @ApiModelProperty(value = "签订日期")
    private Date signDate;
    /**
     * 开始时间
     */
    @ApiModelProperty(value = "开始时间")
    private Date startDate;
    /**
     * 结束时间
     */
    @ApiModelProperty(value = "结束时间")
    private Date endDate;
    /**
     * 金额
     */
    @NotNull(message = "金额不可以为空")
    @ApiModelProperty(value = "金额")
    private BigDecimal money;
    /**
     * 合同文件路径
     */
    @Size(max=255,message = "合同文件路径字段长度不可以超过255个字符")
    @ApiModelProperty(value = "合同文件路径")
    private String filePath;
    /**
     * 签订单位ID
     */
    @ApiModelProperty(value = "签订单位ID")
    private Long principalPartId;
    /**
     * 执行部门--枚举
     */
    @Size(max=50,message = "执行部门--枚举字段长度不可以超过50个字符")
    @ApiModelProperty(value = "执行部门--枚举")
    private String dept;
    /**
     * 负责人
     */
    @ApiModelProperty(value = "负责人")
    private Long manager;
    /**
     * 创建人id
     */
    @ApiModelProperty(value = "创建人id")
    private Long createId;
    /**
     * 新增或修改集合
     */
    @ExcelIgnore
    private List<SalesContractStageVO> salesContractStageList;
    /**
     * 删除集合
     */
    @ExcelIgnore
    private List<Long> delsalesContractStageList;


    @ExcelIgnore
    @ApiModelProperty(value = "多对多引用")
    private List<PartnerVO> partnerPOList;

    @ExcelIgnore
    @Valid
    private SalesContractFileInfoVO salesContractFileInfo;

}

